
"İşe yaramadı" çünkü tablo boyutu (228 GB) o kadar büyük ki, MySQL içinde arama yapıp silmeye çalışırken ya zaman aşımına uğruyor ya da hafızası yetmiyor (Buffer Pool limitine takılıyor). 228 GB'lık bir samanlıkta iğne arayıp silmeye çalışıyoruz, bu yüzden sistem kilitleniyor.
Bu durumda "Silme" (Delete) stratejisini bırakıp, "Kurtarma" (Re-create) stratejisine geçmeliyiz. Bu yöntem %100 çalışır ve endüstri standardıdır.
Mantık şu: 228 GB'lık çöp dolu tablonun içinden çöpleri ayıklamaya çalışmak yerine, sadece sağlam verileri yeni tertemiz bir tabloya kopyalayacağız. Çöp dolu eski tabloyu sonra komple sileceğiz.
Lütfen Laragon Terminalini açın ve aşağıdaki adımları sırasıyla uygulayın. (Bu işlem HeidiSQL'de de yapılabilir ama Terminal donmadan daha kararlı çalışır).
1. Adım: Yeni ve Boş Bir Tablo Oluşturun
Mevcut wp_postmeta tablonuzun aynısından boş bir tane oluşturuyoruz.
code
SQL
CREATE TABLE wp_postmeta_yeni LIKE wp_postmeta;
2. Adım: SADECE Sağlam Verileri Yeni Tabloya Taşıyın
Bu komut şunu yapar: "Eski tablodaki verilere bak, eğer o verinin bağlı olduğu bir Yazı/Sayfa (wp_posts) hala duruyorsa onu yeni tabloya al. Sahibi yoksa (Yetimse/Çöpse) alma."
Böylece o 170.000 adetlik devasa çöp veri kopyalanmayacak ve geride kalacaktır.
code
SQL
INSERT INTO wp_postmeta_yeni
SELECT pm.*
FROM wp_postmeta pm
INNER JOIN wp_posts p ON pm.post_id = p.ID;
(Not: Bu işlem veritabanı boyutuna göre biraz zaman alabilir ama Delete komutu gibi kilitlenmez. İmleç yanıp sönene kadar bekleyin.)
3. Adım: Boyut Kontrolü (Sonucu Görün)
Şimdi yeni tablonun boyutuna bakalım. Muhtemelen MB seviyesinde küçücük bir tablo olduğunu göreceksiniz.
code
SQL
SELECT table_name, round(((data_length + index_length) / 1024 / 1024), 2) as "Boyut (MB)"
FROM information_schema.TABLES
WHERE table_name = "wp_postmeta_yeni" AND table_schema = "yenivt";
(Buradaki yenivt yerine kendi veritabanı adınızı yazın. Eğer sonuç 100-500 MB civarındaysa başardınız demektir!)
4. Adım: Tabloları Değiştirin (Final)
Eğer 3. adımda dosya boyutunun küçüldüğünü gördüyseniz, artık 228 GB'lık devasa çöp tabloyu silip, yeni tabloyu devreye alabiliriz.
code
SQL
-- 1. Eski (şişik) tablonun adını değiştir (Yedek olarak dursun şimdilik)
RENAME TABLE wp_postmeta TO wp_postmeta_eski_cop;

-- 2. Yeni (temiz) tablonun adını asıl isim yap
RENAME TABLE wp_postmeta_yeni TO wp_postmeta;
5. Adım: Temizlik ve Mutlu Son
Sitenizi kontrol edin. Her şey çalışıyorsa, o 228 GB'lık eski çöp dosyayı diskten tamamen silmek için şu komutu verin:
code
SQL
DROP TABLE wp_postmeta_eski_cop;